#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <vector>

using namespace std;

class Solution
{
public:
    vector<int> singleNumber(vector<int>& nums)
    {
        unsigned int x = 0;
        for (int ch : nums)
        {
            x ^= ch;
        }
        x &= (-x);
        vector<int> ret(2);
        for (int ch : nums)
        {
            if (ch & x)
            {
                ret[0] ^= ch;
            }
            else
            {
                ret[1] ^= ch;
            }
        }
        return ret;
    }
};

//class Solution {
//public:
//    int singleNumber(vector<int>& nums) {
//        int x = nums[0];
//        for (int i = 1; i < nums.size(); i++)
//        {
//            x ^= nums[i];
//        }
//        return x;
//    }
//};

//class Solution
//{
//public:
//    int hammingDistance(int x, int y)
//    {
//        int tmp = x ^ y;
//        int ret = 0;
//        while (tmp)
//        {
//            tmp &= (tmp - 1);
//            ret++;
//        }
//        return ret;
//    }
//};

//class Solution
//{
//public:
//    vector<int> countBits(int n)
//    {
//        vector<int> ret;
//        for (int i = 0; i <= n; i++)
//        {
//            int tmp = 0;
//            int emp = i;
//            while (emp)
//            {
//                emp &= (emp - 1);
//                tmp++;
//            }
//            ret.push_back(tmp);
//        }
//        return ret;
//    }
//};
//
//int main()
//{
//    Solution s;
//    s.countBits(2);
//    return 0;
//}
//class Solution
//{
//public:
//    int hammingWeight(int n)
//    {
//        int ret = 0;
//        while (n)
//        {
//            n &= (n - 1);
//            ret++;
//        }
//        return ret;
//    }
//};